<?php
/**
 * Classe para criação de novos utilizadores
 * 
 * @author Ricardo Simão <code@rpsimao.com>
 * @version 1.0
 *
 */

class App_UserService {
	
	/**
	 * Liga á base de dados
	 *
	 * @var Zend_DB
	 */
	protected $db;
	
	/**
	 * users Zend Table
	 * 
	 * @var Users Table 
	 */
	protected $login;
	
	/**
	 * Valores que estão guardados no ficheiro de configuração
	 *
	 * @var array
	 */
	protected $config;
	
	/**
	 * Nome do utilizador
	 *
	 * @var string
	 */
	protected $username;
	
	/**
	 * Palavra passe do utilizador
	 *
	 * @var string
	 */
	protected $password;
		
	/**
	 * Email do utilizador
	 *
	 * @var string
	 */
	protected $email;
	
	/**
	 * Nome completo do utilizador
	 *
	 * @var unknown_type
	 */
	protected $real_name;
	
	/**
	 * Se o utilizador faz parte dos administradores
	 *
	 * @var int
	 */
	protected $admin;
	
	/**
	 * Valores para inserir os dados na base de dados
	 *
	 * @var array
	 */
	protected $params;
	
	/**
	 * Seleciona todos os utilizadores por ordem alfabética
	 *
	 * @var array
	 */
	protected $select;
	
	/**
	 * Guarda os valores de registo da base de dados
	 * Configura a conexão à base de dados
	 */
	function __construct() {
		$config = Zend_Registry::get ( 'login' );
		$db = Zend_Db::factory ( $config->database );
		Zend_Db_Table_Abstract::setDefaultAdapter ( $db );
		
		$this->login = new UsersTable ( );
	}
	
	/**
	 * Insere novo utilizador na base de dados
	 *
	 * @param string $username
	 * @param string $password
	 * @param string $email
	 * @param string $real_name
	 * @param int $admin
	 */
	public function newUser($username, $password, $email, $real_name, $admin = FALSE) {
		$params = array ('username' => $username, 'password' => md5 ( $password ), 'email' => $email, 'real_name' => $real_name, 'admin' => $admin );
		
		$this->login->insert ( $params );
	}
	
	/**
	 * Seleciona todos os utilizadores por ordem alfabética
	 *
	 * @return array
	 */
	public function getAllUsers() {
		
		$select = $this->login->select ();
		$select->order ( 'real_name' );
		return $this->login->fetchAll ( $select );
	}
}

?>